Node.js এ Error Handling এর সেরা পদ্ধতি

Computer Programming - নোড জেএস (Node.js) - Error Handling এবং Debugging (এরর হ্যান্ডলিং এবং ডিবাগিং)
190

Error Handling হল একটি গুরুত্বপূর্ণ দিক যা আপনার অ্যাপ্লিকেশনকে স্থিতিশীল এবং নির্ভরযোগ্য রাখতে সাহায্য করে। Node.js এর asynchronous এবং event-driven প্রকৃতি থাকার কারণে, এর error handling পদ্ধতি অনেকটা অন্যান্য synchronous প্রোগ্রামিং ভাষার থেকে আলাদা। এখানে try-catch, callback functions, Promises, এবং async/await ব্যবহৃত হয়, প্রতিটি পদ্ধতিতে কিছু সেরা অভ্যাস রয়েছে যা আপনার অ্যাপ্লিকেশনকে আরও স্থিতিশীল এবং ত্রুটি-মুক্ত রাখতে সহায়তা করবে।

এখানে কিছু সেরা error handling পদ্ধতি আলোচনা করা হলো:


১. Synchronous Error Handling (try-catch)

যখন আপনি synchronous কোড লিখছেন, তখন try-catch ব্লক ব্যবহার করা হয়। এটি সরাসরি কোড ব্লকের মধ্যে সঠিকভাবে ত্রুটি সনাক্ত এবং হ্যান্ডল করতে সহায়তা করে।

উদাহরণ:

try {
  // Synchronous কোড
  let result = someFunction();
  console.log(result);
} catch (err) {
  console.error('An error occurred:', err.message);
}

সেরা পদ্ধতি:

  • catch ব্লকে যতটা সম্ভব বেশি তথ্য দিন যাতে আপনি ত্রুটির সঠিক কারণ জানতে পারেন।
  • console.error ব্যবহার করুন ত্রুটি লগ করার জন্য, যাতে আপনি সহজে লগগুলি ট্র্যাক করতে পারেন।
  • কাস্টম ত্রুটি (Custom Errors) ব্যবহার করুন যেখানে প্রয়োজন।

২. Asynchronous Error Handling (Callback Functions)

Node.js এ সাধারণত callback functions ব্যবহৃত হয়, যেখানে ত্রুটি প্রক্রিয়াটি প্রথম আর্গুমেন্ট হিসেবে পাঠানো হয়। এটি "error-first" callback pattern নামে পরিচিত।

উদাহরণ:

const fs = require('fs');

// ফাইল পড়া
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('Error reading file:', err);
    return;
  }
  console.log('File data:', data);
});

সেরা পদ্ধতি:

  • Error-first callbacks: সবসময় ত্রুটি চেক করুন প্রথম আর্গুমেন্টে (err), যদি ত্রুটি থাকে তবে প্রক্রিয়া বন্ধ করুন।
  • যখন কোনো ত্রুটি ঘটে, তখন আপনি দ্রুত তার হ্যান্ডলিং করুন এবং পরবর্তী কোড চালানোর আগে ত্রুটির প্রতিক্রিয়া জানিয়ে দিন।

৩. Promises এবং .catch()

Promises হল asynchronous কোডের জন্য আরেকটি জনপ্রিয় পদ্ধতি। ত্রুটি হ্যান্ডলিংয়ের জন্য catch() মেথড ব্যবহার করা হয়।

উদাহরণ:

const someAsyncFunction = () => {
  return new Promise((resolve, reject) => {
    let success = false;
    if (success) {
      resolve('Operation successful');
    } else {
      reject(new Error('Something went wrong'));
    }
  });
};

someAsyncFunction()
  .then(result => {
    console.log(result);
  })
  .catch(err => {
    console.error('Error occurred:', err.message);
  });

সেরা পদ্ধতি:

  • catch(): Promise চেইনিংয়ের শেষে catch() ব্যবহার করুন যাতে কোনো ত্রুটি সঠিকভাবে হ্যান্ডল করা হয়।
  • .then() এর মধ্যে সঠিকভাবে রেজাল্ট প্রসেস করুন, এবং .catch() ব্যবহার করে সুনির্দিষ্ট ত্রুটি হ্যান্ডলিং করুন।

৪. Async/Await এবং try-catch

async/await প্রবর্তনের মাধ্যমে asynchronous কোড লেখা আরও সহজ হয়ে গেছে। ত্রুটি হ্যান্ডলিংয়ের জন্য try-catch ব্লক ব্যবহার করা যেতে পারে, যেটি async ফাংশন দিয়ে লেখা হয়।

উদাহরণ:

const someAsyncFunction = async () => {
  let success = false;
  if (success) {
    return 'Operation successful';
  } else {
    throw new Error('Something went wrong');
  }
};

const main = async () => {
  try {
    const result = await someAsyncFunction();
    console.log(result);
  } catch (err) {
    console.error('Error occurred:', err.message);
  }
};

main();

সেরা পদ্ধতি:

  • try-catch ব্লকটি ব্যবহার করুন যখন আপনি asynchronous কোডে await ব্যবহার করছেন।
  • try ব্লকের মধ্যে await ফাংশন কল করুন এবং catch ব্লকে ত্রুটি হ্যান্ডলিং করুন।
  • async ফাংশনগুলি থেকে ফিরে আসা ত্রুটিগুলিকে সঠিকভাবে ট্র্যাক করুন।

৫. Global Error Handling

Node.js অ্যাপ্লিকেশনে unhandled errors হ্যান্ডল করার জন্য global error handling এর ব্যবহার অত্যন্ত গুরুত্বপূর্ণ। এটি অ্যাপ্লিকেশনের গ্লোবাল পর্যায়ে সমস্ত ত্রুটি ধরা এবং তাদের লগ করা এবং সিস্টেম ক্র্যাশ হওয়া এড়ানো সাহায্য করে।

উদাহরণ:

// UnhandledPromiseRejectionWarning এর জন্য
process.on('unhandledRejection', (reason, promise) => {
  console.error('Unhandled Rejection at:', promise, 'reason:', reason);
});

// UncaughtException এর জন্য
process.on('uncaughtException', (err) => {
  console.error('Uncaught Exception:', err.message);
  process.exit(1); // অ্যাপ্লিকেশন ক্র্যাশ করার পর এক্সিট করুন
});

সেরা পদ্ধতি:

  • process.on('uncaughtException') ব্যবহার করে uncaught exceptions হ্যান্ডল করুন।
  • process.on('unhandledRejection') ব্যবহার করে unhandled promise rejections হ্যান্ডল করুন।
  • কোডে ত্রুটি হ্যান্ডলিং করুন এবং অ্যাপ্লিকেশন কিপে রান করার আগে সঠিকভাবে লগ তৈরি করুন।

৬. Custom Errors (কাস্টম ত্রুটি)

কাস্টম ত্রুটি তৈরি করা সিস্টেমে আরো স্পষ্ট ত্রুটি তথ্য প্রদান করতে সাহায্য করে। আপনি Error অবজেক্টের ভিত্তিতে নিজস্ব ত্রুটি তৈরি করতে পারেন।

উদাহরণ:

class CustomError extends Error {
  constructor(message, statusCode) {
    super(message);
    this.statusCode = statusCode;
  }
}

const someFunction = () => {
  throw new CustomError('Something went wrong!', 400);
};

try {
  someFunction();
} catch (err) {
  console.error(`Error: ${err.message}, Status Code: ${err.statusCode}`);
}

সেরা পদ্ধতি:

  • Custom error classes তৈরি করুন যাতে আপনি message এবং statusCode সহ নির্দিষ্ট ত্রুটি বার্তা সরবরাহ করতে পারেন।
  • ত্রুটির ধরনের উপর ভিত্তি করে specific error handling করুন এবং log করার সময় আরও তথ্য দিন।

সারাংশ

Node.js এর Error Handling গুরুত্বপূর্ণ কারণ এটি অ্যাপ্লিকেশনের স্থিতিশীলতা এবং নির্ভরযোগ্যতা নিশ্চিত করে। সেরা error handling পদ্ধতির মধ্যে try-catch ব্লক, callback functions এর মাধ্যমে error-first pattern, Promises এবং .catch(), async/await এর মাধ্যমে try-catch, global error handling, এবং custom errors ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে আরও স্থিতিশীল এবং ত্রুটিমুক্ত রাখতে পারবেন। Error handling ভালোভাবে কনফিগার করলে আপনার অ্যাপ্লিকেশন নিরাপদ, দ্রুত এবং কার্যকরী হয়ে উঠবে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...